home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-09-21 | 7.3 KB | 154 lines | [TEXT/pdos] |
- Apple II
- Technical Notes
- _____________________________________________________________________________
- Developer Technical Support
-
- AppleTalk
- #4: Printing Through the Firmware
-
- Revised by: Jim Luther September 1990
- Written by: Matt Deatherage & Jim Luther July 1989
-
- This Technical Note discusses considerations of printing through the
- AppleTalk Remote Print Manager (RPM) interface from ProDOS 8 applications.
- Changes since March 1990: Revised code sample to simplify finding the
- transparent network printing slot with the ROM 03 Apple IIgs. Please note
- that the method of finding the transparent network printing slot shown in the
- March 1990 revision of this Note does work correctly, the new method is just
- simpler. In addition, revised the wording of the Note to clarify that
- transparent network printing is the RPM interface.
- _____________________________________________________________________________
-
- The AppleShare Programmer's Guide to the Apple IIgs stated that the Remote
- Print Manager (RPM) interface allowed transparent network printing through
- Super Serial Card entry points in slot 7. This statement is pretty short-
- sighted. It's much like saying printing to an ImageWriter II is initiated
- when you do a PR#1 command--it's only true if what you want is where you think
- it is--and usually it isn't.
-
- Note: The AppleShare Programmer's Guide to the Apple IIgs has been
- superseded by the AppleShare Programmer's Guide to the Apple II
- Family.
-
- An Apple IIe Workstation Card, although recommended for slot 7, can work in
- almost any slot (just like an ImageWriter II with a Super Serial Card can be
- connected to nearly any slot, except maybe slot 3 when the 80-column firmware
- is active). An Apple IIgs with ROM versions 00 or 01 may only have the
- firmware used by the RPM interface in slot 7. An Apple IIgs with ROM version
- 03 may only have the firmware used by the RPM interface in either slot 1 or 2.
-
- Before printing through the RPM interface slot, take the same precautions you
- would take before printing to any slot--check to make sure you see the
- requested slot is a Pascal device before using Pascal entry points, and try to
- look for the signature bytes that indicate the features you want are present.
- In general, avoid hard-coding slot numbers for anything.
-
- ProDOS 8 applications which offer network printing through the RPM interface
- should give users the choice of printing to any of the seven slots as well as
- the Network Printer. When Network Printer is selected, the application can
- find the slot used by the RPM interface by using the 6502 code sample included
- in this Note. Allowing the selection of Network Printer is especially
- important for applications that keep a configuration file containing a user's
- default printer setup. If an application keeps only the slot number in the
- configuration file, users may need to change the printer selection often if
- they print from several different machines.
-
- Warning: Printing to a slot with no firmware generally results in a crash.
-
- The code sample uses two methods to determine the slot the RPM interface is
- using. The first method works with the Apple IIe Workstation card and the ROM
- 01 Apple IIgs. It looks at the AppleTalk completion routine address returned
- by the AppleTalk GetInfo call, and if that address is in the slot ROM space,
- then that slot is the slot used by the RPM interface. In other words, if the
- completion routine points to $0000CnXX, where n is between 1 and 7, then n is
- the slot to be used when printing through the RPM interface. If the
- completion routine address is not in the slot ROM space, then the application
- cannot determine what slot the RPM interface is using and must query the user.
- The second method works only with the ROM 03 Apple IIgs. It retrieves the
- slot the RPM interface is using from location $E101C2.
-
- This technique applies only to ProDOS 8 programs. Apple IIgs applications
- running under GS/OS should do text printing over the network through the
- Remote Print Manager (.RPM) driver, which can be identified by a deviceID of
- $001F as returned from the DInfo call.
-
- ;
- ; This routine will identify AppleTalk and the RPM interface slot
- ; (if possible).
- ; This routine is for ProDOS 8 applications only.
- ;
- keep FindRPMSlot
- longa off
- longi off
-
- FindRPMSlot start
- lda #$00
- sta RPMSlot default to no RPM interface slot
-
- ; Check for AppleTalk (see AppleTalk Technical Note #1)
-
- jsr $BF00 ProDOS 8 MLI
- dc h'42' $42 command for network calls
- dc a'InfoParams' Parameter list address
- bcs NoATalk no AppleTalk; handle the error
-
- ; Get machine type & ROM version (see Apple II Miscellaneous Tech Note #7)
-
- sec
- jsr $FE1F What kind of machine are we on?
- bcs CheckCom Not a IIGS, check completion address
- cpy #$03
- bcc CheckCom Earlier than ROM 03 IIGS, check
- ; completion address
-
- ROM03 anop ROM 03 or greater IIGS' use location
- ; $E101C2 to find the RPM interface slot
- lda $E101C2 Get the RPM interface slot
- sta RPMSlot
-
- beq AskForSlot
- bra HaveSlot
-
- CheckCom anop use completion address to find slot
- lda ComReturn+2 bank $00?
- ora ComReturn+3 high byte = 0?
- bne AskForSlot no, so slot can't be determined
- lda ComReturn+1 get the address page
- cmp #$C8
- bcs AskForSlot greater or equal to $C8 is bad
- cmp #$C1
- bcc AskForSlot less than $C1 is bad
- and #$0F $Cn = $0n
- sta RPMSlot
-
- HaveSlot anop AppleTalk is installed and RPM is
- ; using slot #RPMSlot
-
- AskForSlot anop AppleTalk is installed but RPM
- ; interface slot cannot be determined
-
- NoATalk anop AppleTalk is not installed
-
- rts so this sample returns
-
- RPMSlot entry
- dc h'00' Slot RPM interface is using
-
- InfoParams dc h'00' Synchronous only
- dc h'02' GetInfo call number
- ds 2 result code
- ComReturn ds 4 completion return address
- ds 8 space for other result info
-
- end
-
-
- Further Reference
- _____________________________________________________________________________
- o AppleShare Programmer's Guide for the Apple II Family
- o Apple II AppleTalk Technical Note #1, Identifying AppleTalk
- o Apple II Miscellaneous Technical Note #7, Apple II Family Identification
- o Apple II Miscellaneous Technical Note #8, Pascal 1.1
- Identification Bytes
-
-